package com.wxzz.elearing.evaluation.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.wxzz.elearing.evaluation.dto.*;
import com.wxzz.elearing.evaluation.entity.BusinessCategoryEvaluation;
import com.wxzz.elearing.evaluation.entity.BusinessCategoryEvaluationHistory;
import com.wxzz.elearing.evaluation.entity.TopicHistory;
import com.wxzz.elearing.evaluation.entity.WxUserBusinessCategoryGroup;
import com.wxzz.elearning.common.vo.JgPageVo;
import com.wxzz.elearning.common.vo.ReturnVO;

import java.util.List;

/**
 * <p>
 * 能力测评 服务类
 * </p>
 *
 * @author
 * @since 2021-04-10
 */
public interface IBusinessCategoryEvaluationService extends IService<BusinessCategoryEvaluation> {

    /**
     * 添加能力测评
     *
     * @param businessCategoryEvaluation
     * @return
     */
    ReturnVO saveBusinessCategoryEvaluation(BusinessCategoryEvaluation businessCategoryEvaluation);

    /**
     * 根据id删除能力测评
     * @param businessCategoryEvaluationId
     * @return
     */
    ReturnVO deleteBusinessCategoryEvaluationId(Long businessCategoryEvaluationId);

    /**
     * 能力测评列表
     *
     * @param businessCategoryEvaluationDto
     * @return
     */
    ReturnVO<JgPageVo<List<BusinessCategoryEvaluation>>> listBusinessCategoryEvaluation(Long enterpriseId,BusinessCategoryEvaluationDto businessCategoryEvaluationDto);

    /**
     * 列出能力测评记录
     *
     * @param businessCategoryEvaluationHistoryDto
     * @return
     */
    ReturnVO<JgPageVo<List<BusinessCategoryEvaluationHistory>>> listBusinessCategoryEvaluationHistory(BusinessCategoryEvaluationHistoryDto businessCategoryEvaluationHistoryDto);

    /**
     * 列出能力测评记录试题
     *
     * @param topicHistoryDto
     * @return
     */
    ReturnVO<JgPageVo<List<TopicHistory>>> listTopicHistory(TopicHistoryDto topicHistoryDto);

    /**
     * 根据测评id查询详情
     * @param businessCategoryEvaluationId
     * @return
     */
    ReturnVO<BusinessCategoryEvaluation> selectBusinessCategoryEvaluationDetailById(Long enterpriseId,Long wxUserId,Long businessCategoryEvaluationId);

    /**
     * 查询该企业的测评数据
     * @param enterpriseId
     * @return
     */
    ReturnVO<EvaluationDataDto> selectByEvaluationDataDto(Long enterpriseId);

    /**
     * 分配能力测评人员
     * @param wxUserBusinessCategoryEvaluationDto
     * @return
     */
    ReturnVO saveWxUserBusinessCategoryGroup(Long enterpriseId,WxUserBusinessCategoryEvaluationDto wxUserBusinessCategoryEvaluationDto);

    /**
     * 查询能力测评的绑定人员
     * @param enterpriseId
     * @param wxUserBusinessCategoryEvaluationBindDto
     * @return
     */
    ReturnVO<JgPageVo<List<WxUserBusinessCategoryGroup>>> selectWxUserBusinessCategoryEvaluationBind(Long enterpriseId,WxUserBusinessCategoryEvaluationBindDto wxUserBusinessCategoryEvaluationBindDto);
}
